<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Chameleon-Mini: ConfigurationType Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Chameleon-Mini
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="struct_configuration_type-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ConfigurationType Struct Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_configuration_8h_source.html">Configuration.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a53854068c955c57a0a564bc9f7b16dd7"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a53854068c955c57a0a564bc9f7b16dd7">MemorySize</a></td></tr>
<tr class="separator:a53854068c955c57a0a564bc9f7b16dd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac730d8b9dc9e728bb10069ea1917d99f"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#ac730d8b9dc9e728bb10069ea1917d99f">UidSize</a></td></tr>
<tr class="separator:ac730d8b9dc9e728bb10069ea1917d99f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1ed4e624b9bd8cb65743b5cbc0be2bf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#af1ed4e624b9bd8cb65743b5cbc0be2bf">ReadOnly</a></td></tr>
<tr class="separator:af1ed4e624b9bd8cb65743b5cbc0be2bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c563c8b1f486f38a074f2d4682c2d8a"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a2c563c8b1f486f38a074f2d4682c2d8a">TagFamily</a></td></tr>
<tr class="separator:a2c563c8b1f486f38a074f2d4682c2d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Codec</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Codec related methods. </p>
</div></td></tr>
<tr class="memitem:a2e62a9c3c9361a09c94505dff5820a9b"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a2e62a9c3c9361a09c94505dff5820a9b">CodecInitFunc</a> )(void)</td></tr>
<tr class="separator:a2e62a9c3c9361a09c94505dff5820a9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b3fe0c8c0643102a8f07157fa0265f7"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a2b3fe0c8c0643102a8f07157fa0265f7">CodecDeInitFunc</a> )(void)</td></tr>
<tr class="separator:a2b3fe0c8c0643102a8f07157fa0265f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afcabcce06f07798a43b95d0cf4d05db2"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#afcabcce06f07798a43b95d0cf4d05db2">CodecTaskFunc</a> )(void)</td></tr>
<tr class="separator:afcabcce06f07798a43b95d0cf4d05db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Application</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Application related functions. </p>
</div></td></tr>
<tr class="memitem:a835db40b131727b32d732585e8984d4a"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a835db40b131727b32d732585e8984d4a">ApplicationInitFunc</a> )(void)</td></tr>
<tr class="separator:a835db40b131727b32d732585e8984d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcb24589b62d04a8aa3e7d129e87e239"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#abcb24589b62d04a8aa3e7d129e87e239">ApplicationResetFunc</a> )(void)</td></tr>
<tr class="separator:abcb24589b62d04a8aa3e7d129e87e239"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e695aaf0fd0bb6e5165b23c654e9346"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a9e695aaf0fd0bb6e5165b23c654e9346">ApplicationTaskFunc</a> )(void)</td></tr>
<tr class="separator:a9e695aaf0fd0bb6e5165b23c654e9346"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a902e157e8657cd7bb2ef5211c1a6bc58"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a902e157e8657cd7bb2ef5211c1a6bc58">ApplicationTickFunc</a> )(void)</td></tr>
<tr class="separator:a902e157e8657cd7bb2ef5211c1a6bc58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12036017f3f9e7a0c6a168539e262571"><td class="memItemLeft" align="right" valign="top">uint16_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a12036017f3f9e7a0c6a168539e262571">ApplicationProcessFunc</a> )(uint8_t *ByteBuffer, uint16_t BitCount)</td></tr>
<tr class="separator:a12036017f3f9e7a0c6a168539e262571"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d31886f03ebf75d59611b7dbe81aeca"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#a9d31886f03ebf75d59611b7dbe81aeca">ApplicationGetUidFunc</a> )(ConfigurationUidType Uid)</td></tr>
<tr class="separator:a9d31886f03ebf75d59611b7dbe81aeca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd1eeffbd4b0aeab57449e57f67cd400"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_configuration_type.html#afd1eeffbd4b0aeab57449e57f67cd400">ApplicationSetUidFunc</a> )(ConfigurationUidType Uid)</td></tr>
<tr class="separator:afd1eeffbd4b0aeab57449e57f67cd400"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>With this <code>struct</code> the behavior of a configuration is defined. </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a2e62a9c3c9361a09c94505dff5820a9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::CodecInitFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that initializes the codec. </p>

</div>
</div>
<a class="anchor" id="a2b3fe0c8c0643102a8f07157fa0265f7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::CodecDeInitFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that deinitializes the codec. </p>

</div>
</div>
<a class="anchor" id="afcabcce06f07798a43b95d0cf4d05db2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::CodecTaskFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that is called on every iteration of the main loop. Within this function the essential codec work is done. </p>

</div>
</div>
<a class="anchor" id="a835db40b131727b32d732585e8984d4a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::ApplicationInitFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that initializes the application. </p>

</div>
</div>
<a class="anchor" id="abcb24589b62d04a8aa3e7d129e87e239"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::ApplicationResetFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that resets the application. </p>

</div>
</div>
<a class="anchor" id="a9e695aaf0fd0bb6e5165b23c654e9346"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::ApplicationTaskFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that is called on every iteration of the main loop. Application work that is independent from the codec layer can be done here. </p>

</div>
</div>
<a class="anchor" id="a902e157e8657cd7bb2ef5211c1a6bc58"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::ApplicationTickFunc) (void)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Function that is called roughly every 100ms. This can be used for parallel tasks of the application, that is independent of the codec module. </p>

</div>
</div>
<a class="anchor" id="a12036017f3f9e7a0c6a168539e262571"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t(* ConfigurationType::ApplicationProcessFunc) (uint8_t *ByteBuffer, uint16_t BitCount)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function does two important things. It gets called by the codec. The first task is to deliver data that have been received by the codec module to the application module. The application then can decide how to answer to these data and return the response to the codec module, which will process it according to the configured codec.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ByteBuffer</td><td>Pointer to the start of the buffer, where the received data are and where the application can put the response data. </td></tr>
    <tr><td class="paramname">BitCount</td><td>Number of bits that have been received.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of bits of the response. </dd></dl>

</div>
</div>
<a class="anchor" id="a9d31886f03ebf75d59611b7dbe81aeca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::ApplicationGetUidFunc) (ConfigurationUidType Uid)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Writes the UID for the current configuration to the given buffer. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Uid</td><td>The target buffer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="afd1eeffbd4b0aeab57449e57f67cd400"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void(* ConfigurationType::ApplicationSetUidFunc) (ConfigurationUidType Uid)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Writes a given UID to the current configuration. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">Uid</td><td>The source buffer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a53854068c955c57a0a564bc9f7b16dd7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t ConfigurationType::MemorySize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Defines how many space the configuration needs. For emulating configurations this is the memory space of the emulated card.</p>
<dl class="section note"><dt>Note</dt><dd>For reader or sniff configurations this is set to zero. </dd></dl>

</div>
</div>
<a class="anchor" id="ac730d8b9dc9e728bb10069ea1917d99f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t ConfigurationType::UidSize</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Defines the size of the UID for emulating configurations.</p>
<dl class="section note"><dt>Note</dt><dd>For reader or sniff configurations this is set to zero. </dd></dl>

</div>
</div>
<a class="anchor" id="af1ed4e624b9bd8cb65743b5cbc0be2bf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ConfigurationType::ReadOnly</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Implies whether the Memory can be changed. </p>

</div>
</div>
<a class="anchor" id="a2c563c8b1f486f38a074f2d4682c2d8a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint8_t ConfigurationType::TagFamily</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Specify tag family - see the defines above. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 24 2020 14:46:30 for Chameleon-Mini by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
